home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format CD 45
/
Amiga Format CD45 (1999-09)(Future Publishing)(GB)(Track 1 of 2)[!][issue 1999-11].iso
/
+system+
/
tools
/
wb
/
muibase
/
todo
< prev
next >
Wrap
Text File
|
1999-08-20
|
7KB
|
171 lines
Here are some ideas I collected from some emails by my alpha/beta testers.
The testers names are:
magr2112@hem2.passagen.se (Mats Granstrom)
raresoft@rz.fh-augsburg.de (Ralph Reuchlein)
shining@braunschweig.netsurf.de (Thomas Fricke)
andre@melior.s.bawue.de (André Schenk)
klaus@melior.s.bawue.de (Klaus Gessner)
00060099@southnet.de (Markus Göttler)
oliver.roberts@iname.com (Oliver Roberts)
and of course me: gutmann@informatik.uni-freiburg.de (Steffen Gutmann)
* Programming function for deleting all records of a table.
* (LASTPOS substr string) which returns the position of the string
where the last substr appears in it.
* (COPIES string number) for returning a string of 'number' times
the contents of 'string'.
* new flag in the New/Change attribute requester that disables
changing the project's number-of-changes value.
* Display record trigger function
* Larger max number of characters for string attributes.
* Direct expressions for virtual attributes instead of function entries.
* (EVAL <str-expr>) for programming MUIbase.
* Image kind for virtual attributes.
* Memo kind for virtual attributes.
* Jump-to-key feature for virtual attributes of list kind.
* Improve display listview by adding arrows to each entry like ListTree does.
* Use keypad keys for special purposes.
* Progress indicator when ordering records.
* Load window button images at program start.
* Some kind of load/save of filters. Maybe in a "MUI-pulldown-menu".
* Prevent users from changing the structure of a database.
[Planned are Password protection for project and structure].
* Select-from-where query optimization
The select-from-where query is currently not optimized. E.g. imagine the
following situation: a relation called Person has about 1000 records and
you want to run the following query:
SELECT a.Name, b.Name FROM Person a, Person b
WHERE (AND (= a.Name "Steffen") (= b.Name "Mats"))
Don't try to find any sense in this query :-)
Now the query command builds the cross product of 1000 x 1000 records
= 1 000 000 tuples to examine! This will take many hours.
But if you examine the WHERE expression you see that
(= a.Name "Steffen") only depends on records from Person a and
(= b.Name "Mats") only depend on records from Person b, so
you could first check the expression (= a.Name "Steffen")
for all records of Person a and (= b.Name "Mats") for
all records of Person b and then build the cross product.
This way you only need to check 1000 + 1000 = 2000 tuples.
Thus the running time has been improved from n² to 2n
where n is the number of records of relation Person.
I already have an idea how to optimize the select-from-where query
for arbitrary WHERE expressions that consists of AND, OR and NOT expressions.
* Allow Ordering on reference attributes.
* Apply changes made to choice labels to all existing records.
* Mask/Display editor with Drag 'n Drop.
* New data type: Selection for selecting n items out of m items.
* Context menu item "Search for" for editor fields.
* Optional log file where all changes are written in ASCII to.
* Copy & Paste of several attributes.
* Hotlist for program output and query print requester.
* Indices.
* More features for preprocessor (Macros, conditional compilation)
--- Ideas & suggestions which will have to wait ---
* Foreground colors for text objects.
Problem: MUI's current approach for setting the foreground color
in Text objects is limited to only 8 pen numbers, and these pen
numbers may refer to only a subset of 8 colors, e.g. on my system
they refer to only 4 real colors.
* Special functions support
I know that you would not build in special functions e.g. for
mathematical functions like arsinh() and so on. But for some
special databases this would be nice. Is there any possibility
to implement an interface for self written function libraries?
AREXX demonstrates this ability: with addlib() you can load in
an AREXX library and you can use its functions like a
implemented function. What do you think about that?
I don't know how to implement this for now. Maybe a C interface and
a linkable object module would solve it. However I would really prefer
the ARexx solution (of course an improved one compared to AmigaBase).
I am thinking about an (RX pattern ...) function that returns a string
containing the result of the ARexx command.
An idea that could work is to use a shared library with a well
defined interface. The user provides the library, registers it
by calling a MUIbase function, MUIbase calls an init function to
know about all available functions of the library, and then the user
can call functions from the library.
* How about this: Add a menu point to the context specific textfield
menu which pops up a window with two lists of relations and their
attributes. The left list contains the relations and the right one
the depending attributes like the relations and attribute lists in
the structure editor. Selecting one attribute will insert the full
relation path into the textfield. At the moment I must have a
photographic mind to remember the relations with their attributes.
I don't know how I can implement this with MUI 3.8. The editor menu
is a context menu and in 3.8 context menus are limited to only
one toplevel menu. I don't want to put all relation names in the
toplevel menu. I could add a menu item "Insert attribute/relation name"
to the toplevel menu and pop up a window with all relations and attributes.
But this solution is not user friendly because context menus can't have
shortcuts and you would have to use the mouse the whole time.
I will wait how MUI will handle context menus in the future.
* Context menu for relations?
I will wait how context menus are implemented in MUI > 3.8.
* Use ListTree for the display list.
Currently ListTree does not support multi-selection. So adding
a group object to the display list by multi-selecting some objects
for being the childs of the new group and pressing the "Group"
button will not be possible. I will wait until ListTree supports
multi-selection.
--- Ideas I am not going to implement:
* Autosave
Reasons:
o Saving from time to time is a very simple task.
o You can't remember the last time your computer autosaved your projects.
o The computer may save in an inconsistent state, e.g. imagine
you manage two bank accounts and would like to transfer
money from one account to the other. If the autosave feature
saves your project after you made the transaction for one account
but not for the other one then you have saved an inconsistent
database project.